imcontextsimple: Ignore more modifiers in compose
authorUlli Kehrle <ulli@hrnz.li>
Wed, 21 Apr 2021 23:50:35 +0000 (01:50 +0200)
committerUlli Kehrle <ulli@hrnz.li>
Thu, 22 Apr 2021 01:56:30 +0000 (03:56 +0200)
Previously it was impossible to compose characters on higher levels of
some keyboard layouts as pressing the level selection key would just
exit compose mode.

Examples for affected keyboard layouts include the Latvian
apostrophe-variant "lv(apostrophe)" (latched third level), the extended
German keyboard layout "de(e1)" (latched fifth level) as well as the
multilingual Canadian keyboard layout "ca(multix)" and the German
neo-layout "de(neo)" and its descendants (shifted fifth level).

To reproduce, set a compose key and select the Latvian apostrophe layout.
Notice that you now can input [ by pressing first the ' and then the 8-key.
Then pressing <compose>'8'8 should produce ⟦, but prior to this patch it
did not.

gtk/gtkimcontextsimple.c

index 074ffdd01f98048f4bc2ec9a1796d24b575f8b14..1cbb64cf45858cd475b28fd53675d57691cc3eab 100644 (file)
@@ -105,7 +105,10 @@ static const guint16 gtk_compose_ignore[] = {
   GDK_KEY_Hyper_L,
   GDK_KEY_Hyper_R,
   GDK_KEY_Mode_switch,
-  GDK_KEY_ISO_Level3_Shift
+  GDK_KEY_ISO_Level3_Shift,
+  GDK_KEY_ISO_Level3_Latch,
+  GDK_KEY_ISO_Level5_Shift,
+  GDK_KEY_ISO_Level5_Latch
 };
 
 static void     gtk_im_context_simple_finalize           (GObject                  *obj);